/******************************************************************************* * Copyright (c) 2005, 2011 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.ant.internal.ui.model; import java.io.File; import org.apache.tools.ant.Task; import org.apache.tools.ant.util.FileUtils; import org.eclipse.ant.internal.core.IAntCoreConstants; import org.eclipse.ant.internal.ui.editor.AntEditorCompletionProcessor; import org.xml.sax.Attributes; public class AntAntNode extends AntTaskNode { private String fFile; public AntAntNode(Task task, Attributes attributes) { super(task); StringBuffer label = new StringBuffer("ant "); //$NON-NLS-1$ fFile = attributes.getValue(IAntCoreConstants.DIR); if (fFile != null) { if (!FileUtils.isAbsolutePath(fFile)) { File basedir = task.getProject().getBaseDir(); if (basedir != null) { fFile = basedir.getAbsolutePath() + File.separatorChar + fFile; } } label.append(fFile); label.append(File.separatorChar); } else { File basedir = task.getProject().getBaseDir(); if (basedir != null) { fFile = basedir.getAbsolutePath(); } } String fileName = attributes.getValue(IAntModelConstants.ATTR_ANT_FILE); if (fileName == null) { fileName = "build.xml"; //$NON-NLS-1$ } label.append(fileName); if (fFile == null || FileUtils.isAbsolutePath(fileName)) { fFile = fileName; } else { fFile += File.separatorChar + fileName; } String more = attributes.getValue(IAntModelConstants.ATTR_TARGET); if (more != null) { label.append(' '); label.append(more); } setBaseLabel(label.toString()); } /* * (non-Javadoc) * * @see org.eclipse.ant.internal.ui.model.AntElementNode#getReferencedElement(int) */ @Override public String getReferencedElement(int offset) { if (fFile != null) { String textToSearch = getAntModel().getText(getOffset(), offset - getOffset()); if (textToSearch != null && textToSearch.length() != 0) { String attributeString = AntEditorCompletionProcessor.getAttributeStringFromDocumentStringToPrefix(textToSearch); if (IAntModelConstants.ATTR_ANT_FILE.equals(attributeString)) { return fFile; } } } return null; } }